home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_asm / objxref / xrmain.asm < prev    next >
Assembly Source File  |  1986-04-26  |  4KB  |  157 lines

  1.  PAGE    81,128
  2.  TITLE    XRMAIN    - Main Entry Point
  3.  SUBTTL    V1.0 - May 1986    - Cross    Reference Facility
  4. ;
  5. ;=============================================================================|
  6. ;         Copyright 1986 - Dan Daetwyler - Springdale, AR 72764          |
  7. ;=============================================================================|
  8.     .SALL
  9. ;
  10. DATA    SEGMENT    BYTE PUBLIC 'DATA'
  11. ;
  12. PRMT1    DB    13,10,'Use Library or Object files as input (L/O):  $'
  13. PRMT2    DB    13,10,'Input file mask (*.OBJ):  $'
  14. PRMT3    DB    13,10,'Output to printer or disk (P/D):  $'
  15. PRMT4    DB    13,10,'Enter output file name:  $'
  16. IBUF    DB    64
  17. IBL    DB    ?
  18. IBD    DB    63 DUP (?)
  19. DFNAM    DB    '*.OBJ',0
  20. MODE    DB    ?
  21. ;
  22.     PUBLIC    DTA,DTAA,DTAT,DTAD,DTAS,DTAN,FHAN
  23. ;
  24. DTA    DB    21 DUP (?)
  25. DTAA    DB    ?
  26. DTAT    DW    ?
  27. DTAD    DW    ?
  28. DTAS    DW    ?,?
  29. DTAN    DB    13 DUP (?)
  30. ;
  31. FHAN    DW    ?            ;Open file handle
  32. ;
  33. DATA    ENDS
  34. ;
  35. STACK    SEGMENT    PARA STACK 'STACK'
  36.     DB    20 DUP ('STACK')
  37. STACK    ENDS
  38. ;
  39. CODE    SEGMENT    BYTE PUBLIC 'CODE'
  40.     ASSUME    CS:CODE,DS:DATA,ES:DATA
  41. ;
  42. ;==============================================================================
  43. ; Entry    Point    XRMAIN                                  |
  44. ;==============================================================================
  45. ;                                          |
  46. ; This is the main entry point for the cross reference facility, and as    such  |
  47. ; performs the initialization for the full facility.                  |
  48. ;                                          |
  49. ; Entry    conventions:    None.                              |
  50. ;                                          |
  51. ; Returns:        None.                              |
  52. ;                                          |
  53. ;==============================================================================
  54. ;
  55.     EXTRN    XRPOBJ:NEAR,XRPLIB:NEAR,XRSORT:NEAR,XRPRNT:NEAR,XRDISK:NEAR
  56. ;
  57.     PUBLIC    XRMAIN
  58. ;
  59. XRMAIN    PROC    FAR
  60.     PUSH    DS
  61.     XOR    AX,AX
  62.     PUSH    AX
  63.     MOV    AX,DATA
  64.     MOV    DS,AX
  65.     MOV    ES,AX
  66. DOP1:    MOV    DX,OFFSET PRMT1
  67.     MOV    AH,9
  68.     INT    21H
  69.     MOV    AH,1
  70.     INT    21H
  71.     OR    AL,' '
  72.     CMP    AL,'l'
  73.     JE    LIBE
  74.     CMP    AL,'o'
  75.     JNE    DOP1
  76. LIBE:    MOV    MODE,AL
  77.     MOV    DX,OFFSET DTA        ;Set DTA to our    memory
  78.     MOV    AH,1AH
  79.     INT    21H
  80.     MOV    DX,OFFSET PRMT2
  81.     MOV    AH,9
  82.     INT    21H
  83.     MOV    DX,OFFSET IBUF
  84.     MOV    AH,10
  85.     INT    21H            ;Get file mask
  86.     MOV    CL,IBL            ;Get length of input string
  87.     XOR    CH,CH
  88.     JCXZ    DEFALT            ;Use default mask
  89.     MOV    SI,OFFSET IBD
  90.     MOV    DX,SI
  91.     ADD    SI,CX
  92.     MOV    BYTE PTR [SI],0        ;Force name to end with    null
  93. COMN:    XOR    CX,CX
  94.     MOV    AH,4EH
  95.     INT    21H            ;Find first
  96.     JNC    PRCES            ;Not found
  97.     JMP    EXIT
  98. DEFALT:    MOV    DX,OFFSET DFNAM
  99.     JMP    COMN
  100. SECND:    MOV    AH,4FH
  101.     INT    21H
  102.     JC    DONE            ;No more matching files
  103. PRCES:    MOV    DX,OFFSET DTAN        ;Point to file name
  104.     MOV    AX,3D00H
  105.     INT    21H            ;Open file
  106.     JC    SECND            ;Couldn't open
  107.     MOV    FHAN,AX            ;Save file handle
  108.     CMP    MODE,'l'        ;See if    library    opened
  109.     JNE    OBJECT            ;Do object file
  110.     CALL    XRPLIB            ;Process library file
  111.     JMP    SECND
  112. OBJECT:    CALL    XRPOBJ            ;Process object    deck
  113.     JMP    SECND
  114. DONE:    CALL    XRSORT            ;Sort externals
  115. PDRETY:    MOV    DX,OFFSET PRMT3
  116.     MOV    AH,9
  117.     INT    21H
  118.     MOV    AH,1
  119.     INT    21H
  120.     OR    AL,' '
  121.     CMP    AL,'p'
  122.     JE    MPRNT
  123.     CMP    AL,'d'
  124.     JNE    PDRETY
  125.     MOV    DX,OFFSET PRMT4
  126.     MOV    AH,9
  127.     INT    21H
  128.     MOV    DX,OFFSET IBUF
  129.     MOV    AH,10
  130.     INT    21H            ;Get output file name
  131.     MOV    CL,IBL
  132.     XOR    CH,CH
  133.     MOV    SI,OFFSET IBD
  134.     MOV    DX,SI
  135.     ADD    SI,CX
  136.     MOV    BYTE PTR [SI],0        ;Make name end with null
  137.     MOV    AH,3CH
  138.     XOR    CX,CX
  139.     INT    21H            ;Create    output file
  140.     MOV    FHAN,AX            ;Save handle
  141.     CALL    XRDISK            ;Output    array to disk
  142.     JMP    EXIT
  143. MPRNT:    CALL    XRPRNT            ;Now print Xref    listing
  144.     MOV    AH,5
  145.     MOV    DL,12
  146.     INT    21H            ;Force out last    page
  147.     MOV    DL,27
  148.     INT    21H
  149.     MOV    DL,'@'            ;Reset printer
  150.     INT    21H
  151. EXIT:    RET
  152. XRMAIN    ENDP
  153. ;
  154. CODE    ENDS
  155. ;
  156.     END    XRMAIN
  157.